home *** CD-ROM | disk | FTP | other *** search
/ Software Vault: The Gold Collection / Software Vault - The Gold Collection (American Databankers) (1993).ISO / cdr49 / 102_01.zip / PACSCORE.C < prev    next >
Text File  |  1993-06-03  |  2KB  |  70 lines

  1. /* Scoring for CPM pacman                */
  2. #include "pacdefs.h"
  3.  
  4. /* get score file:                    */
  5.  
  6. gscore()
  7.  {    int fid;
  8.     char *cc;
  9.     fid = open(SCFILE, 0);
  10.     if (fid >= 0)
  11.      { read(fid, &Scores, 4);    /* 4 128-byte blocks */
  12.        close(fid);
  13.        UpdSc = 0; }
  14.     else
  15.      { cc = &Scores;
  16.        for (fid=512; fid--; *cc++ = 0);
  17.        UpdSc = 1; }
  18.  }
  19.  
  20. /* Write out score file, iff UpdSc==1                */
  21.  
  22. wscore()
  23.  {    int fid;
  24.     if (UpdSc == 0) return;
  25.     if ((fid = creat(SCFILE)) < 0) return;
  26.     write(fid, &Scores, 4);
  27.     close(fid);
  28.     UpdSc = 0;
  29.  }
  30.  
  31. /* Enter current score, iff its sufficiently high:            */
  32.  
  33. escore(s)
  34.  unsigned s;
  35.  {
  36.     char i, *cc, *dd;
  37.     for (i=0; i<8; i++)
  38.      { if (s > Scores[i].Score)
  39.         { dd = &(Scores[7]);
  40.           cc = &(Scores[i]);
  41.           printf("\r\nCongratulations,");
  42.           printf(" you made the number %d score!\r\n", i+1);
  43.           if (i < 7) while (dd-- != cc) dd[64] = *dd;
  44.  
  45.           Scores[i].Score = s;
  46.           dd = &(Scores[i].Name);
  47.           printf("Your name, for the record: ");
  48.           cc = dd;
  49.           while (1) switch (i = 0177&getchar())
  50.             { case '\n':    case '\r':
  51.                 *cc++ = 0; UpdSc = 1; goto disp;
  52.               case 0177:
  53.               case '\b':    if (cc == dd) continue;
  54.                     --cc;
  55.                     putch('\b'); putch(' '); putch('\b');
  56.                     continue;
  57.               default:    if (i < ' ') continue;
  58.                     putch(i);
  59.                     *cc++ = i; }    
  60.         }
  61.  
  62.      }
  63. disp:    printf("\r\n\n");
  64.     printf("           TOP EIGHT GAMES:                       \r\n");
  65.     for (i=0; i<8; i++)
  66.     if (Scores[i].Score)
  67.      printf("%3d.  %5d  %s\r\n", i+1, Scores[i].Score, Scores[i].Name);
  68.     sleep(2);
  69.  }
  70.